package zpy.servlet.listener;


import org.apache.commons.fileupload.ProgressListener;

public class FileUploadProgressListener implements ProgressListener {

	//正在读取的字节总数
		private long allSize;
		//已经读取的字节总数
		private long upSize;
		//使用时间秒
		private long useTime;
		//传输率 KB/s  k字节/秒
		private double upRate;
		//上传比例
		private double percent;
		//当前传输项
		private int  item;
		private long beginTime = System.currentTimeMillis();
		private long curTime      = System.currentTimeMillis();
		/**
		 * pBytesRead 目前为止读取的已经读取的总字节数
		 * pContentLength  正在读取的字节总数。如果这个数字未知，可能是-1。
		 * pItems 当前正在读取的字段的编号。(0 =目前没有项目，1 =第一项正在读取，…)
		 */
		@Override
		public void update(long pBytesRead, long pContentLength, int pItems) {
			// TODO Auto-generated method stub
			allSize = pContentLength;
			upSize  = pBytesRead;
			item    = pItems;
			if (pContentLength == -1) {
				return;
			}
			percent = (int)(((double)upSize/allSize)*100);//传输比例
			//计算传输率
			curTime = System.currentTimeMillis();
			long useTime = curTime - beginTime;
			if (useTime!=0) {
				upRate = ((double)upSize / ((double)useTime/1000))/1024;//传输率 单位 KB/s
			}else{
				upRate = 0.0;
			}
			this.useTime = useTime/1000;//毫秒转化为秒
		}


}
